로딩 중이에요... 🐣
[코담]
웹개발·실전 프로젝트·AI까지, 파이썬·장고의 모든것을 담아낸 강의와 개발 노트
02.요약정리 | ✅ 저자: 이유정(박사)
01. 공공데이터 API 사용법
✅ 저자: 이유정(박사)
1. 필수 라이브러리 설치
동기 방식 요청:
pip install requests
비동기 방식 요청 (성능 최적화 시):
pip install aiohttp aiodns
2. 공공데이터 API 사용 순서
- API URL 확인
- 인증키(서비스 키) 확보
- 요청 파라미터 구성
- JSON 응답 데이터 파싱 및 처리
3. 비동기 방식 요청 예제 (aiohttp
사용)
Jupyter에서 테스트 가능
import aiohttp
import json
async def fetch_dummyjson():
async with aiohttp.ClientSession(connector=aiohttp.TCPConnector(ssl=False)) as session:
async with session.get("https://dummyjson.com/products") as resp:
j = await resp.json()
print(json.dumps(j, indent=2))
aiohttp
는 asyncio 기반의 빠른 웹 요청을 위한 라이브러리입니다.https://dummyjson.com
은 자유롭게 테스트 가능한 샘플 API입니다.
4. 공공데이터포털에서 날씨 데이터 가져오기
공공데이터 포털:
👉 https://www.data.go.kr/data/15059093/openapi.do
- 검색어: 종관
- 활용 신청 후 서비스 키 획득
Python 코드 예시:
1) 라이브러리 임포트 및 함수 정의
import requests
def get_weather_data():
url = "http://apis.data.go.kr/1360000/AsosDalyInfoService/getWthrDataList"
params = {
"serviceKey": "일반 인증키(Decoding)",
"dataType": "JSON",
"numOfRows": 10,
"pageNo": 1,
"dataCd": "ASOS",
"dateCd": "DAY",
"startDt": "20250101",
"endDt": "20250106",
"stnIds": "108" # 서울 지점
}
response = requests.get(url, params=params)
data = response.json()
if data["response"]["header"]["resultCode"] == "00":
item_list = data["response"]["body"]["items"]["item"]
dict_list = []
for item in item_list:
item_dict = {
"date": item["tm"], # 날짜
"min_temp": item["minTa"], # 최저기온
"max_temp": item["maxTa"], # 최고기온
"cloud_amount": item["avgTca"], # 평균 전운량
"max_snow": item["ddMes"], # 일 최심적설
"rain": item["sumRn"] # 일강수량
}
dict_list.append(item_dict)
return dict_list
else:
return None
2) Jupyter에서 실행 예:
from api_scrap.weather_data import get_weather_data
weather = get_weather_data()
print(weather)
✅ 요약
- 공공데이터 API는
requests
또는aiohttp
로 요청 - 서비스 키와 파라미터를 정확히 입력
- JSON 구조 이해하고 필요한 데이터만 추출
- 테스트용 API(
dummyjson.com
)로 먼저 연습해 보기